package com.weimob.mcloud.wechatwork.customer.service.user.service;

import com.weimob.mcloud.wechatwork.customer.service.user.module.bo.process.CurrentProcessListBO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.bo.process.ProcessStatisticBO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.bo.process.StageCustomerListBO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.bo.process.StageRelationDetailBO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.process.StageAuthDTO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.process.StageSetUpDTO;
import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.process.StageStatisticDTO;
import com.weimob.soa.common.response.SoaResponse;

import java.util.List;

/**
 * 客户阶段关联相关
 *
 * @author yh
 */
public interface CustomerStageRelationExport {

    /**
     * 查询员工的流程列表(当前流程)
     *
     * @param stageAuthDTO stageAuthDTO
     * @return List<CurrentProcessListBO>
     */
    SoaResponse<List<CurrentProcessListBO>, ?> currentProcessList(StageAuthDTO stageAuthDTO);

    /**
     * 设置阶段
     *
     * @param stageSetUpDTO stageSetUpDTO
     * @return boolean
     */
    SoaResponse<Boolean, ?> stageSetUp(StageSetUpDTO stageSetUpDTO);

    /**
     * 判断员工是否有此流程权限
     *
     * @param authDTO authDTO
     * @return boolean
     */
    SoaResponse<Boolean, ?> isAuth(StageAuthDTO authDTO);


    /**
     * 查询当前流程的所有阶段跟进数据
     *
     * @param stageAuthDTO stageAuthDTO
     * @return List<CurrentStageListBO>
     */
    SoaResponse<List<StageRelationDetailBO>, ?> currentStageList(StageAuthDTO stageAuthDTO);


    /**
     * 查询当前员工此阶段的所有客户（消息-查看详情列表）
     *
     * @param stageAuthDTO stageAuthDTO
     * @return pageResponse<CurrentProcessListBO>
     */
    SoaResponse<List<StageCustomerListBO>, ?> fetchStageCustomerList(StageAuthDTO stageAuthDTO);


    /**
     * 查询活跃度列表
     *
     * @param stageStatisticDTO stageStatisticDTO
     * @return List<ProcessStatisticBO>
     */
    SoaResponse<List<ProcessStatisticBO>, ?> fetchStatisticList(StageStatisticDTO stageStatisticDTO);


    /**
     * 根据流程和阶段查询 当前阶段详情
     *
     * @param stageAuthDTO stageAuthDTO
     */
    SoaResponse<StageRelationDetailBO, ?> stageRelationDetail(StageAuthDTO stageAuthDTO);

}
